\chapter{Modelo de Funcionalidades - Feature Model}
\label{ch:modelfeaturea}

\begin{quotation}[Um Passeio No Mundo Livre, Afrociberdelia]{Chico Science}
Um passo à frente e você não está mais no mesmo lugar\\
One step forward and you are not in the same place
\end{quotation}


\section{Feature Model}
\label{sc:featuremodelas}
Uma das principais preocupações de área de engenharia de software diz 
respeito à reutilização [1]. Isso porque a reutilização no contexto de 
desenvolvimetno de software pode contribuir significativamente para aumentar a 
qualidade do software assim como reduzir o esforço  no seu desenvolvimento. 
Uma das técnicas de maior impacto de reuso de projeto e código em larga escala 
que foi proposta nos últimos anos é o desenvolvimetno e codificação de 
Frameworks Orientados a Objetos (OO) [3, 4]. Frameworks OO possibilitam o 
desenvolvimento com reuso, de família de aplicações[8], criadas a partir de uma 
estrutura que captura os conceitos mais gerais das aplicações. Eles permitem gerar 
famílias de aplicações de um mesmo domínio, atravésda definição da 
implementação de um núcleo que lida com os requisitos comuns dessas 
aplicações, e definem um conjunto de pontos de extensão na forma de classes 
abstratas ou interfaces, que são estendidas para concretizar a funcionalidade 
específica de aplicações concretas da família. 
Apesar dos benefícios trazidos pela tecnologia de frameworks OO, diversos 
problemas foram identificados a partir da experiência do uso de tal tecnologia na 
construção de sistemas OO, tais como: (i) dificuldade para configuração e 
customização do framework para atender diferentes cenários de reuso; e (ii) 
dificuldade para compor o framework de forma transversal a outros frameworks 
existentes. A partir da identificação de tais problemas, pesquisadores têm proposto 
a implementação de frameworks usando de forma complementar técnicas OO e 


\subsection{Definição}
\label{sc:definicaofeature}
Aiming to improve change management processes, some organizations have used
specific systems (generally called \emph{bug-trackers}) to manage, store and
handle change requests (also known as \emph{bug reports}). A bug report is
defined as a software artifact that describes some defect, enhancement, change
request, or an issue in general, that is submitted to a bug tracker;
generally, bug report submitters are developers, users, or testers. Such
systems are useful because changes to be made in a software can be quickly
identified and submitted to the appropriate people \citep{Anvik2005}.

\subsection{Ferramentas}
\label{sc:ferramentasfeat}
Aiming to improve change management processes, some organizations have used
specific systems (generally called \emph{bug-trackers}) to manage, store and
handle change requests (also known as \emph{bug reports}). A bug report is
defined as a software artifact that describes some defect, enhancement, change
request, or an issue in general, that is submitted to a bug tracker;
generally, bug report submitters are developers, users, or testers. Such
systems are useful because changes to be made in a software can be quickly
identified and submitted to the appropriate people \citep{Anvik2005}.




\subsection{Resumo deste Capítulo}
\label{sc:resumodecapsosdf}
Aiming to improve change management processes, some organizations have used
specific systems (generally called \emph{bug-trackers}) to manage, store and
handle change requests (also known as \emph{bug reports}). A bug report is
defined as a software artifact that describes some defect, enhancement, change
request, or an issue in general, that is submitted to a bug tracker;
generally, bug report submitters are developers, users, or testers. Such
systems are useful because changes to be made in a software can be quickly
identified and submitted to the appropriate people \citep{Anvik2005}.











